﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using LaGraderia.Model;
using System.Collections.Generic;
using LaGraderia.Dades;

namespace TestDades
{
    [TestClass]
    public class AltaCompleta
    {

        public Equip CreaEquip(int numParella)
        {

            Jugador j1 = new Jugador
            {
                Nom = "Jugador" + numParella + "A",
                Cognom1 = "Cognom" + numParella + "A",
                Email = "email" + numParella + "A" + "@hotmail.com",
                LlocDret = false,
                MaDreta = true,
                Pala = "Head Bela" + numParella,
                Estat = EnumEstat.Afegit
            };

            Jugador j2 = new Jugador
            {
                Nom = "Jugador" + numParella + "B",
                Cognom1 = "Cognom" + numParella + "B",
                Email = "email" + numParella + "B" + "@hotmail.com",
                LlocDret = false,
                MaDreta = true,
                Pala = "Drop shot" + numParella,
                Estat = EnumEstat.Afegit
            };

            j1.EstadsJugadors = new List<EstadJugador>();
            j1.EstadsJugadors.Add(new EstadJugador { Punts = numParella, Temporada = 2012, Estat = EnumEstat.Afegit });

            j2.EstadsJugadors = new List<EstadJugador>();
            j2.EstadsJugadors.Add(new EstadJugador { Punts = numParella, Temporada = 2012, Estat = EnumEstat.Afegit });

            Equip eq1 = new Equip { Nom = "", Estat = EnumEstat.Afegit };
            eq1.Jugadors = new List<Jugador>();
            eq1.Jugadors.Add(j1);
            eq1.Jugadors.Add(j2);


            eq1.EstadsEquip = new List<EstadEquip>();
            eq1.EstadsEquip.Add(new EstadEquip { Punts = 10, Temporada = 2012, Estat = EnumEstat.Afegit });

            return eq1;

        }

        public Competicio CreaCompeticio(int numCompeticio, int numEtapes, int numPartits)
        {
            Competicio comp = new Competicio
            {
                Nom = "Nom de la competició " + numCompeticio,
                Estat = EnumEstat.Afegit,
                TipusCompeticio = EnumTipusCompeticio.Lliga
            };

            Equip eq1 = CreaEquip(9998);
            Equip eq2 = CreaEquip(9999);

            comp.Etapes = new List<Etapa>();

            for (int i = 1; i <= numEtapes; i++)
            {
                Etapa et = new Etapa { NumEtapa = i, Estat = EnumEstat.Afegit };
                comp.Etapes.Add(et);

                for (int j = 1; j <= numPartits; j++)
                {
                    Partit p = new Partit { Data = DateTime.Now, DataModificacio = DateTime.Now, UsuariModificacio = "Sistema Sistema", Estat = EnumEstat.Afegit };
                    p.EquipLocal = eq1;
                    p.EquipVisitant = eq2;
                    if (et.Partits == null)
                    {
                        et.Partits = new List<Partit>();
                    }
                    et.Partits.Add(p);

                    Resultat r1 = new Resultat { NumResultat = 1, PuntsLocal = 6, PuntsVisitant = 3, Estat = EnumEstat.Afegit };
                    Resultat r2 = new Resultat { NumResultat = 2, PuntsLocal = 6, PuntsVisitant = 7, Estat = EnumEstat.Afegit };
                    Resultat r3 = new Resultat { NumResultat = 3, PuntsLocal = 6, PuntsVisitant = 4, Estat = EnumEstat.Afegit };

                    if (p.Resultats == null)
                    {
                        p.Resultats = new List<Resultat>();
                    }
                    p.Resultats.Add(r1);
                    p.Resultats.Add(r2);
                    p.Resultats.Add(r3);
                }

            }

            return comp;

        }

        [TestMethod]
        public void AltaEquips()
        {

            int NumParelles = 2;

            for (int i = 1; i <= NumParelles; i++)
            {
                BDEquips.Actualitza(CreaEquip(i));
            }
            
            BDCompeticions.Actualitza(CreaCompeticio(1, 38, 10));
            
        }
    }
}

